int main() {
	long *p, q;		// 'p' y 'q' son punteros a enteros
	p = new long[5]; 

   //Ahora 'p' apunta a una dir de memoria en la cual se ha reservado espacio contiguo para 5 enteros, es decir, un array de 5 elementos
   //Es decir, p apunta al primer elemento de dicho array. Si quisieramos asignar un valor al primer elemento de este array (que ahora mismo
   // solo contiene basura), podria hacerse por ejemplo asi: *p = 42;

   *p = 2;	
	q = p;			// 'q' ahora apunta tambien a donde mismo apunta p, es decir, el primer elemento de este array de 5 elementos
   print_ts("igualados punteros");

	q++;	//Aumentamos en 1 el valor de q: la direccion de memoria a la que apunta, por lo que ahora 'q' esta apuntando al segundo element
	*q = 15;		// Asignamos valor a este segundo elemento

	// Si ahora quisiera acceder al valor del segundo elemento de 'p', indexando por ejemplo con "p[1]"
	// pues deberia salir el valor que acabamos de asignar accediendo a traves de 'q', osea 15


  print_ts("despues de asignar 15");
  p++; //ahora p deberia apuntar tambien a 15
  print_ts("fin");
}
